package com.bjbn.model.dto;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import javax.validation.constraints.NotBlank;

/**
 * 通用请求参数
 */

@Data
public class CommonRequest {
    /*
    描述：数据推送第三方平台接口规范
    编码格式统一为：UTF-8
    请求方式统一为：HTTP POST
    请求内容统一为：JSON
    请求参数为JSON字符串：
    格式：
    {
        “ts”:”请求时间”
        “sn”:”签名”,
        “ve”:”版本号”,
        “data_items”:”业务参数”
    }
    ts:请求时间(yyyyMMddHHmmssSSS)
    sn:签名(sign),使用md5算法对密钥和ts以及data_items进行签名，签名后的值为大写，规则如下：
    sn=md5(secret+ts+data_items)
     “ve”:版本号(version),可为空，默认1.0
    data_items:业务参数(有转义符)，JSON格式字符串，具体内容及构造方式，见业务接口协议：
    格式：
                “data_items”：”[{
                    \“参数名1\”: \“参数值1\”,
    \“参数名2\”,:\“参数值2\”,
                    …
    },{
                    \“参数名1\”,:\“参数值1\”,
    \“参数名2\”: \“参数值2\”,
                    …
                }
                ……
    ] ”


            完整示例：
    {
        “ts”:”20171124125469456”,
        “sn”:”14B50BBC30E9471C8F8AC4ADA0D8DA51”,
        “ve”:”1.0”,
        “data_items”:”[{
            \“item_id\”：\“435FA12F3C4747B0BA48E945868FC420\”,
            \“park_name\”: \“测试车场\”,
            \“park_code\”: \“test\”,
            \“address\”:\ “中国\”
    },{
            \“item_id\”：\“335FA12F3C4747B0BA48E945868FC422\”,
             \“park_name\”: \“测试车场2\”,
            \“park_code”: \“test2\”,
            \“address\”: \“中国\”
    }]”
    }
    * */

    /**
     * 请求时间，格式：yyyyMMddHHmmssSSS
     */
    @Schema(description = "请求时间", example = "20171124125469456", required = true)
    @NotBlank(message = "请求时间不能为空")
    private String ts;
    /**
     * 签名
     */

    @Schema(description = "签名", example = "14B50BBC30E9471C8F8AC4ADA0D8DA51", required = true)
    @NotBlank(message = "签名不能为空")
    private String sn;
    /**
     * 版本号
     */
    @Schema(description = "版本号", example = "1.0", required = false)
    private String ve;
    /**
     * 业务参数
     * 业务参数(有转义符)，JSON格式字符串，具体内容及构造方式，见业务接口协议
     */
    @Schema(description = "业务参数", example = "[{“item_id”：“435FA12F3C4747B0BA48E945868FC420”,“park_name”: “测试车场”,“park_code”: “test”,“address”: “中国”}]" , required = true)
    @NotBlank(message = "业务参数不能为空")
    private String data_items;

}
